package com.example.orderservice.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;


/**
 * 订单实体类
 * 对应数据库表 `orders`，存储订单主信息
 *
 * @author czwa
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("orders")
public class Order {
    /** 订单唯一标识ID（自增主键） */
    @TableId(value = "id", type = IdType.AUTO)
    private int id;

    /** 订单备注信息 */
    private String information;

    /** 订单实付金额（单位：元） */
    private double expend;

    /** 订单创建时间 */
    private LocalDateTime createTime;

    /** 订单创建者ID */
    private Long creator;

    /** 订单状态（0=待支付，1=已支付，2=已取消，3=已完成） */
    private Integer status;

    /** 订单明细项列表（非数据库字段） */
    @TableField(exist = false)
    private item[] items;

    /** 订单商品总数量（非数据库字段） */
    @TableField(exist = false)
    private int totalItems;

    /** 订单更新时间（非数据库字段） */
    @TableField(exist = false)
    private LocalDateTime updateTime;

    /** 订单更新者ID（非数据库字段） */
    @TableField(exist = false)
    private Long updater;

    /** 下单用户ID */
    private int userId;

    /** 使用的优惠券ID */
    private Integer couponId;
}